package br.com.cnpv.managebean.evento;

import java.util.ArrayList;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

import br.com.cnpv.modelo.bo.CidadeBO;
import br.com.cnpv.modelo.bo.CombustivelBO;
import br.com.cnpv.modelo.bo.EstadoBO;
import br.com.cnpv.modelo.bo.EventoBO;
import br.com.cnpv.modelo.bo.MarcaBO;
import br.com.cnpv.modelo.bo.ModeloBO;
import br.com.cnpv.modelo.bo.TipoClienteBO;
import br.com.cnpv.modelo.bo.TipoPinturaBO;
import br.com.cnpv.modelo.bo.TipoVeiculoBO;
import br.com.cnpv.modelo.entity.Cliente;
import br.com.cnpv.modelo.entity.Evento;
import br.com.cnpv.modelo.entity.Modelo;
import br.com.cnpv.modelo.entity.Oficina;
import br.com.cnpv.modelo.entity.Usuario;
import br.com.cnpv.modelo.entity.Veiculo;

@ManagedBean(name="eventoMB")
@SessionScoped
public class EventoMB extends EventoBean
{
	public String paginaBusca()
	{
		return "pretty:evento";
	}
	
	public void buscar()
	{
		
	}
	
	public String paginaNovo()
	{
		try
		{
			// BO
			EstadoBO estadoBO = EstadoBO.getInstance();
			TipoClienteBO tipoClienteBO = TipoClienteBO.getInstance();
			TipoVeiculoBO tipoVeiculoBO = TipoVeiculoBO.getInstance();
			CombustivelBO combustivelBO = CombustivelBO.getInstance();
			TipoPinturaBO tipoPinturaBO = TipoPinturaBO.getInstance();
			
			
			estadoList = estadoBO.listar();
			tipoClienteList = tipoClienteBO.listar();
			tipoVeiculoList = tipoVeiculoBO.listar();
			combustivelList = combustivelBO.listar();
			tipoPinturaList = tipoPinturaBO.listar();
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		return "pretty:novoEvento";
	}
	
	public void saveOrUpdate()
	{
		FacesMessage message = null;
		try
		{
			HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
			Usuario usuario = (Usuario)request.getSession().getAttribute("usuario");
			//BO
			EventoBO bo = EventoBO.getInstance();
			evento.setIdUsuario(usuario.getId());
			bo.saveOrUpdate(evento, cliente, oficina, veiculo, usuario);
			if(evento.getId() == 0)
			{
				message = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "Evento Cadastrado com Sucesso!");
				evento = new Evento();
				cliente = new Cliente();
				oficina = new Oficina();
				veiculo = new Veiculo();
			}else
			{
				message = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "Evento Alterado com Sucesso!");
			}
		}catch(Exception e)
		{
			message = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "Ocorreu um erro. Tente mais tarde");
			e.printStackTrace();
		}
		
		FacesContext.getCurrentInstance().addMessage(null, message);
	}
	
	public String paginaAlterar()
	{
		try
		{
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		
		return "pretty:alterarEvento";
	}
	
	public void listaCidadesCliente()
	{
		try
		{
			//BO
			CidadeBO cidadeBO = CidadeBO.getInstance();
			
			cidadeListCliente = cidadeBO.listarCidades(idEstadoCliente);
			
		}catch(Exception e)
		{
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "Ocorreu um erro. Tente mais tarde");
			FacesContext.getCurrentInstance().addMessage(null, message);
			e.printStackTrace();
		}
	}
	
	public void listaCidadesOficina()
	{
		try
		{
			//BO
			CidadeBO cidadeBO = CidadeBO.getInstance();
			
			cidadeListOficina = cidadeBO.listarCidades(idEstadoOficina);
			
		}catch(Exception e)
		{
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "Ocorreu um erro. Tente mais tarde");
			FacesContext.getCurrentInstance().addMessage(null, message);
			e.printStackTrace();
		}
	}
	
	public void listaModelos()
	{
		try
		{
			//bo
			ModeloBO modeloBO = ModeloBO.getInstance();
			
			modeloList = modeloBO.listarPorMarca(idMarca);
		}catch(Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public void listaMarcas()
	{
		try
		{
			MarcaBO marcaBO = MarcaBO.getInstance();
			
			marcaList = marcaBO.listarPorTipo(veiculo.getIdTipoVeiculo());
			modeloList = new ArrayList<Modelo>();
		}catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}
